// * 使用 mongoose 创建模型
import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose";
import { HydratedDocument } from "mongoose";
import { v4 as uuidv4 } from "uuid";

// 定义 System 文档类型
export type SystemDocument = HydratedDocument<System>;

// 使用 @Schema 装饰器定义 System 模型
@Schema() // 将 System 类映射到同名的 MongoDB 集合，但在末尾有一个额外的 “s” - 所以最终的集合名称将是 Systems
export class System {
  // 使用 @Prop 装饰器定义 System 模型的属性 接受一个选项对象参数
  // @Prop({ type: String, default: () => uuidv4() }) // 使用 uuid 覆盖默认 mongodb的_id
  // _id: string;
  @Prop({ type: String, default: () => uuidv4() })
  id: string;
  @Prop({ required: true })
  name: string; // 菜单名称
  @Prop({ required: true, unique: true })
  index: string; // 菜单索引
  @Prop({ default: [] })
  children: { id: string; name: string; index: string }[];
}

// 使用 SchemaFactory.createForClass 方法创建 SystemSchema 实例
export const SystemSchema = SchemaFactory.createForClass(System);
